/**
 * CSS验证器模块
 * @version 1.0.0
 */

// CSS值验证函数
export function validateCSSValue(property, value) {
    // 检查是否包含不安全的字符
    const unsafeChars = /[<>'"\\]/;
    if (unsafeChars.test(value)) {
        return false;
    }
    
    // 检查括号是否匹配
    const openParens = (value.match(/\(/g) || []).length;
    const closeParens = (value.match(/\)/g) || []).length;
    if (openParens !== closeParens) {
        return false;
    }
    
    // 检查特定属性的值格式
    if (property === 'color' || property === 'background-color' || property === 'border-color') {
        // 颜色值验证
        const colorPatterns = [
            /^#[0-9a-f]{3,8}$/i,                    // 十六进制
            /^rgba?\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*(?:,\s*[0-1]?\.?\d*)?\s*\)$/,  // RGB/RGBA
            /^hsla?\(\s*\d+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-1]?\.?\d*)?\s*\)$/,  // HSL/HSLA
            /^(transparent|currentColor|inherit|initial|unset)$/i  // 关键字
        ];
        return colorPatterns.some(pattern => pattern.test(value));
    }
    
    return true;
}

// 安全的CSS生成函数
export function generateSafeCSS(styles) {
    if (!styles || typeof styles !== 'object') {
        return null;
    }
    
    const safeStyles = {};
    for (const [property, value] of Object.entries(styles)) {
        if (validateCSSValue(property, value)) {
            safeStyles[property] = value;
        } else {
            console.warn(`[JZ UnoCSS] CSS属性值无效 ${property}: ${value}`);
        }
    }
    
    return Object.keys(safeStyles).length > 0 ? safeStyles : null;
} 